Qt+opencv二值化
我用的是Qt5.6.0+opencv3.2,套件是MinGW,关于在Qt中如何配置的问题,可以参考这篇文章,
http://blog.csdn.net/gufeiyunshi/article/details/50967440
打开图像做个二值化处理,以证明配置没有问题。
在ui界面放一个label和一个pushButton,比较喜欢使用Qt做界面开发,它融合了C#和C++两种语言的好处。
在mainwindow.h写一个槽函数,作为接受点,处理我们发出的指令。
private slots:void on_pushButton_clicked();
在mainwindow.cpp输入一下程序:
如果我们使用opencv的方法读取图像或者视频到label中,需要对图像做一个转换,QImage类型的图像才可以在ui中显示。
QImage img;img=QImage((const unsigned char*)dstImage.data,dstImage.cols,dstImage.rows,QImage::Format_Grayscale8);ui->label->setPixmap(QPixmap::fromImage(img));
注意新建的img是不是指针类型,显示的是不是指针类型。然后再使用到的就是纯粹opencv的知识了。
mainwindow.cpp主程序:
#include "openimage.h"
#include "ui_openimage.h"
#include <QString>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <QFileDialog>
#include <QMessageBox>
using namespace cv;
using namespace std;
QString filename;
openImage::openImage(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::openImage)
{
ui->setupUi(this);
}
openImage::~openImage()
{
delete ui;
}
void openImage::on_pushButton_clicked()
{
Mat srcImage,grayImage,dstImage;
srcImage=imread("F:/Projects_Qt/3.jpg");
cvtColor(srcImage,grayImage,CV_BGR2GRAY);
threshold(grayImage,dstImage,150,255,THRESH_BINARY);
QImage img;
img=QImage((const unsigned char*)dstImage.data,dstImage.cols,dstImage.rows,QImage::Format_Grayscale8);
ui->label->setPixmap(QPixmap::fromImage(img));
//QImage img=new QImage;
//filename=QFileDialog::getOpenFileName(this,tr("选择图像"),".","Images(*.png *.bmp *.jpg *tif *.GIF)::Video Files(*.avi *.mp4)");
//filename=QFileDialog::getOpenFileName(this,tr("选择图像"),"F:/Projects_Qt/3.jpg",tr("Images(*.png *.bmp *.jpg *tif *.GIF)"));
//if(filename.isEmpty())
//{
// return;
//}
// else
// {
// QImage* img=new QImage;
// if(!(img->load(filename)))
// {
// QMessageBox::information(this,tr("打开图像失败"),tr("打开图像失败"));
// delete img;
// return;
// }
// ui->label->setPixmap(QPixmap::fromImage(*img));
// }
}
上面注释的是寻找文件的方法显示图像,不利用opencv处理图像,不建议使用,但是没有配置opencv的可以用注掉的程序显示图像。
最后的处理结果:
Qt+opencv二值化相关推荐
- python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例
python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...
- opencv二值化找轮廓检测背景简单小物体
一.前言 本篇主要是针对背景简单,且具有固定颜色的单类小物体,方法为在灰度化时选用图片的HSV中的S通道,再使用opencv 二值化找轮廓大法可将小物体框出. 原理很简单,图片->取S通道灰度化 ...
- python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...
- opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法
一.引言 在<OpenCV阈值处理函数threshold处理32位彩色图像的案例>介绍了threshold 函数,但threshold 的图像阈值处理对于某些光照不均的图像,这种全局阈值分 ...
- OpenCV二值化方法
cvThreshold是opencv库中的一个函数 作用:函数 cvThreshold 对单通道数组应用固定阈值操作.该函数的典型应用是对灰度图像进行阈值操作得到二值图像.(cvCmpS 也可以达到此 ...
- OpenCV+MFC学习笔记(二):OpenCV二值化处理图像并在Picture Control中并自适应显示
在前面我们已经完成通过OpenCV读取图片在Picture Control中并自适应显示.下面我们很自然的需要对读取的图片进行处理,处理完之后很自然的想到要看看效果.所以今天的笔记是通过OpenCV灰 ...
- python + opencv + 二值化处理图片数据集(三种方法)
二值化处理图片数据集 首先导入相应的包 cv2即opencv-python包 if __name__ == "__main__": 上面这一句话的含义: 自己的 .py 可以作为自 ...
- opencv 二值化 python_Python OpenCV 图像二值化-阈值分割
1.二值化处理 # 手动二值化处理 # 设置阈值大小 threshold thresh = 125 # 设置超过阈值像素值的最大值 maxval = 255 # THRESH_BINARY:超过阈值为 ...
- python:opencv 二值化处理
1:二值化处理 https://blog.csdn.net/zj360202/article/details/79165796 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是 ...
- OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu
阈值化函数: double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int thresh ...
最新文章
- 分享6款堪称神器却很少有人知道的软件,让人惊喜!
- nginx gzip配置
- 深度探索C++对象模型——关于对象
- 虚拟机和linux的安装
- php 中间表示语言,[转载]php 底层 探究之php编译过程及中间语言 opcode
- 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
- oracle删除死锁进程
- 【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类
- VSCode 上竟然也能约会,谈对象了???
- 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
- Java里线程的隔离方式_线程隔离浅析
- python linux 执行scp,python 使用标准库连接linux实现scp和执行命令
- Ubuntu下设置键盘背光灯
- 纯HTML5+CSS3仿B站播放页
- 计算机专业读研外文文献怎么找,计算机专业学术论文参考文献推荐 计算机专业学术外文文献怎么找...
- linux共享磁盘挂载ntfs,解决linux(ubuntu18)下无法挂载ntfs磁盘,并读写挂载硬盘
- 怎样将A4纸打印成A3纸张正反面
- wince6.0操作系统的架构
- VLC 媒体播放器将登陆 Apple TV
- 【CQOI2009】叶子的染色