pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

OpenCV 中的圖像轉換

Image transformation in OpenCV(OpenCV 中的圖像轉換)
本文介紹了OpenCV 中的圖像轉換的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這個問題與這個問題有關: 函數.我寫了一個快速腳本來展示如何做到這一點.如您所見,這在 Python 中非常簡單.這是測試圖片:

這是變形后的結果:

這里是代碼:

導入 cv2從 scipy.interpolate 導入網格數據將 numpy 導入為 npgrid_x, grid_y = np.mgrid[0:149:150j, 0:149:150j]目的地 = np.array([[0,0], [0,49], [0,99], [0,149],[49,0],[49,49],[49,99],[49,149],[99,0],[99,49],[99,99],[99,149],[149,0],[149,49],[149,99],[149,149]])源 = np.array([[22,22], [24,68], [26,116], [25,162],[64,19],[65,64],[65,114],[64,159],[107,16],[108,62],[108,111],[107,157],[151,11],[151,58],[151,107],[151,156]])grid_z = griddata(目標,源,(grid_x,grid_y),方法='cubic')map_x = np.append([], [ar[:,1] for ar in grid_z]).reshape(150,150)map_y = np.append([], [ar[:,0] for ar in grid_z]).reshape(150,150)map_x_32 = map_x.astype('float32')map_y_32 = map_y.astype('float32')orig = cv2.imread("tmp.png")扭曲 = cv2.remap(原始,map_x_32,map_y_32,cv2.INTER_CUBIC)cv2.imwrite("warped.png", 扭曲)

我想你可以用谷歌搜索一下 griddata 是做什么的.簡而言之,它進行插值,在這里我們使用它來將稀疏映射轉換為密集映射,因為 cv2.remap 需要密集映射.我們只需要將值轉換為 float32,因為 OpenCV 抱怨 float64 類型.請告訴我進展如何.

更新:如果你不想依賴Scipy,一種方法是在你的代碼中實現2d插值功能,例如看Scipy中griddata的源代碼或更簡單的像這樣 http://inasafe.readthedocs.org/en/latest/_modules/engine/interpolation2d.html 僅依賴于 numpy.不過,我建議為此使用 Scipy 或其他庫,盡管我明白為什么只需要 CV2 和 numpy 對于這樣的情況可能會更好.我想聽聽您的最終代碼如何解決數獨問題.

This question is related to this question: How to remove convexity defects in sudoku square

I was trying to implement nikie's answer in Mathematica to OpenCV-Python. But i am stuck at the final step of procedure.

ie I got the all intersection points in square like below:

Now, i want to transform this into a perfect square of size (450,450) as given below:

(Never mind the brightness difference of two images).

Question: How can i do this in OpenCV-Python? I am using cv2 version.

解決方案

Apart from etarion's suggestion, you could also use the remap function. I wrote a quick script to show how you can do this. As you see coding this is really easy in Python. This is the test image:

and this is the result after warping:

And here is the code:

import cv2
from scipy.interpolate import griddata
import numpy as np

grid_x, grid_y = np.mgrid[0:149:150j, 0:149:150j]
destination = np.array([[0,0], [0,49], [0,99], [0,149],
                  [49,0],[49,49],[49,99],[49,149],
                  [99,0],[99,49],[99,99],[99,149],
                  [149,0],[149,49],[149,99],[149,149]])
source = np.array([[22,22], [24,68], [26,116], [25,162],
                  [64,19],[65,64],[65,114],[64,159],
                  [107,16],[108,62],[108,111],[107,157],
                  [151,11],[151,58],[151,107],[151,156]])
grid_z = griddata(destination, source, (grid_x, grid_y), method='cubic')
map_x = np.append([], [ar[:,1] for ar in grid_z]).reshape(150,150)
map_y = np.append([], [ar[:,0] for ar in grid_z]).reshape(150,150)
map_x_32 = map_x.astype('float32')
map_y_32 = map_y.astype('float32')

orig = cv2.imread("tmp.png")
warped = cv2.remap(orig, map_x_32, map_y_32, cv2.INTER_CUBIC)
cv2.imwrite("warped.png", warped)

I suppose you can google and find what griddata does. In short, it does interpolation and here we use it to convert sparse mappings to dense mappings as cv2.remap requires dense mappings. We just need to convert to the values to float32 as OpenCV complains about the float64 type. Please let me know how it goes.

Update: If you don't want to rely on Scipy, one way is to implement the 2d interpolation function in your code, for example, see the source code of griddata in Scipy or a simpler one like this http://inasafe.readthedocs.org/en/latest/_modules/engine/interpolation2d.html which depends only on numpy. Though, I'd suggest to use Scipy or another library for this, though I see why requiring only CV2 and numpy may be better for a case like this. I'd like to hear how your final code solves Sudokus.

這篇關于OpenCV 中的圖像轉換的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區域周圍繪制一個矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個矩形邊界框中應用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據文本方向檢測圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測圖像中矩形的中心和角度)
主站蜘蛛池模板: 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 威廉希尔WilliamHill·足球(中国)体育官方网站| 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 精密模具加工制造 - 富东懿 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 棕刚玉_白刚玉_铝酸钙-锐石新材料 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 艺术漆十大品牌_艺术涂料加盟代理_蒙太奇艺术涂料厂家品牌|艺术漆|微水泥|硅藻泥|乳胶漆 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 |